iT邦幫忙

2023 iThome 鐵人賽

DAY 14
0

這個是我在第一份工作時學到的,非常方便,尤其是在dropdown、popup、modal等常常使用,可以讓你點擊空白區域關閉,會回傳一個ref讓你可以放在component上

import { useEffect, useRef } from "react";

const useOutsideClick = (callback: () => void) => {
  const ref = useRef<HTMLElement | null>(null);

  useEffect(() => {
    const handleClick = (event: MouseEvent) => {
      if (ref.current && !ref.current.contains(event.target as Node)) {
        callback();
      }
    };

    document.addEventListener("click", handleClick);

    return () => {
      document.removeEventListener("click", handleClick);
    };
  }, [callback]); // updated dependency array to include callback instead of ref

  return ref;
};

export default useOutsideClick;

上一篇
[Day 13] useDebounce測試
下一篇
[Day 15] 今天換個方式測試useOutsideClick吧
系列文
React進階班,用typescript與jest製作自己的custom hooks庫30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言